---
layout: post
title: ESLint v<%- version %> released
teaser: "We just pushed ESLint v<%- version %>, which is a <%- type %> release upgrade of ESLint. This release <% if (type !== "patch") { %>adds some new features and <% } %>fixes several bugs found in the previous release.<% if (type === "major") { %> This release also has some breaking changes, so please read the following closely.<% } %>"
image: release-notes-<%- type %>.png
draft: true
authors:
  - eslintbot
categories:
  - Release Notes
tags:
  - Release
---

<%
const RULE_REGEX = new RegExp(`\`?\\b(${ruleList.join("|")})\\b\`?`, "g");

function linkify(line) {
    return line
        .replace(/([^\s/]+[/][^\s/]+)?#(\d+)/g, (_, repo, num) => `[${repo || ""}#${num}](https://github.com/${repo || "eslint/eslint"}/issues/${num})`)
        .replace(RULE_REGEX, "[$&](/docs/rules/$1)");
}

function outputList(items) {
    items.forEach(function(line) {%>
<%- linkify(line) %><%
    });
}

%>

<% if (prereleaseMajorVersion) { %>
## Highlights

This is a summary of the major changes you need to know about for this version of ESLint.

### Installing

Since this is a pre-release version, you will not automatically be upgraded by npm. You must specify the `next` tag when installing:

```
npm i eslint@next --save-dev
```

You can also specify the version directly:

```
npm i eslint@<%- version %> --save-dev
```

### Migration Guide

As there are a lot of changes, we've created a [migration guide](/docs/next/use/migrate-to-<%- prereleaseMajorVersion %>) describing the breaking changes in great detail along with the steps you should take to address them. We expect that most users should be able to upgrade without any build changes, but the migration guide should be a useful resource if you encounter problems.

<% } %>

<% if (typeof changelog.breaking !== "undefined") { %>
## Breaking Changes

<% outputList(changelog.breaking); %>

<% } %>

<% if (typeof changelog.new !== "undefined") { %>
## Features

<% outputList(changelog.new); %>

<% } %>

<% if (typeof changelog.update !== "undefined") { %>
## Enhancements

<% outputList(changelog.update); %>

<% } %>

<% if (typeof changelog.fix !== "undefined") { %>
## Bug Fixes

<% outputList(changelog.fix); %>

<% } %>

<% if (typeof changelog.docs !== "undefined") { %>
## Documentation

<% outputList(changelog.docs); %>

<% } %>

<% if (typeof changelog.upgrade !== "undefined") { %>
## Dependency Upgrades

<% outputList(changelog.upgrade); %>

<% } %>

<% if (typeof changelog.build !== "undefined") { %>
## Build Related

<% outputList(changelog.build); %>

<% } %>

<% if (typeof changelog.chore !== "undefined") { %>
## Chores

<% outputList(changelog.chore); %>

<% } %>
